﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace com.kmer.interfaces {
	public interface IPushFactory :IFactory{
		/// <summary>
		/// 发送消息
		/// </summary>
		/// <param name="msgType"></param>
		/// <param name="CusId"></param>
		/// <param name="Title"></param>
		/// <param name="Data"></param>
		/// <param name="pushServiceAppId">【无用】推送系统的AppId</param>
		/// <returns></returns>
		int Send(int msgType, int CusId, string Title, object Data, string pushServiceAppId);

		/// <summary>
		/// 发送消息
		/// </summary>
		/// <param name="msgType"></param>
		/// <param name="CusId"></param>
		/// <param name="Title"></param>
		/// <param name="Data"></param>
		/// <param name="appId">【无用】</param>
		/// <returns></returns>
		int Send(int msgType, int CusId, string Title, object Data, Guid appId);

		/// <summary>
		/// 异步发送消息
		/// </summary>
		/// <param name="msgType"></param>
		/// <param name="CusId"></param>
		/// <param name="Title"></param>
		/// <param name="Data"></param>
		/// <param name="pushServiceAppId">【无用】推送系统的AppId</param>
		/// <returns></returns>
		Task<int> SendSync(int msgType, int CusId, string Title, object Data, string pushServiceAppId);

		/// <summary>
		/// 异步发送消息
		/// </summary>
		/// <param name="msgType"></param>
		/// <param name="CusId"></param>
		/// <param name="Title"></param>
		/// <param name="Data"></param>
		/// <param name="appId">【无用】</param>
		/// <returns></returns>
		Task<int> SendSync(int msgType, int CusId, string Title, object Data, Guid appId);

		/// <summary>
		/// 发送信息给多个用户（相同的信息）
		/// </summary>
		/// <param name="msgType"></param>
		/// <param name="Users"></param>
		/// <param name="Title"></param>
		/// <param name="Data"></param>
		/// <param name="pushServiceAppId">【无用】推送系统的AppId</param>
		/// <returns></returns>
		void SendToUsers(int msgType, IEnumerable<int> Users, string Title, object Data, string pushServiceAppId);

		/// <summary>
		/// 发送信息给多个用户（相同的信息）
		/// </summary>
		/// <param name="msgType"></param>
		/// <param name="Users"></param>
		/// <param name="Title"></param>
		/// <param name="Data"></param>
		/// <param name="appId">【无用】</param>
		/// <returns></returns>
		void SendToUsers(int msgType, IEnumerable<int> Users, string Title, object Data, Guid appId);

		/// <summary>
		/// 异步发送信息给多个用户（相同的信息）
		/// </summary>
		/// <param name="msgType"></param>
		/// <param name="Users"></param>
		/// <param name="Title"></param>
		/// <param name="Data"></param>
		/// <param name="pushServiceAppId">【无用】推送系统的AppId</param>
		Task SendToUsersSync(int msgType, IEnumerable<int> Users, string Title, object Data, string pushServiceAppId);

		/// <summary>
		/// 异步发送信息给多个用户（相同的信息）
		/// </summary>
		/// <param name="msgType"></param>
		/// <param name="Users"></param>
		/// <param name="Title"></param>
		/// <param name="Data"></param>
		/// <param name="appId">【无用】</param>
		Task SendToUsersSync(int msgType, IEnumerable<int> Users, string Title, object Data, Guid appId);
	}
}
